11480
16558
Je souhaite supprimer une branche à la fois localement et à distance.
Échec des tentatives de suppression d'une branche distante
$ git branch -d télécommandes / origine / correction de bogue
erreur: branche 'télécommandes / origine / correction de bogue' introuvable.
$ git branch -d origine / correction de bogue
erreur: branche 'origine / correctif' introuvable.
$ git branch -rd origine / correction de bogue
Suppression de l'origine / correction de bogue de la branche distante (était 2a14ef7).
$ git push
tout est à jour
$ git pull
Depuis github.com:gituser/gitproject
* [nouvelle branche] bugfix -> origine / bugfix
Déjà à jour.
Que dois-je faire différemment pour supprimer avec succès la branche télécommandes / origine / correction de bogue à la fois localement et à distance? 
1
2
Prochain
Résumé
$ git push -d  
$ git branch -d 
Notez que dans la plupart des cas, le nom distant est origin.
Dans un tel cas, vous devrez utiliser la commande comme ceci.
$ git push -d origine 
Supprimer la branche locale
Pour supprimer la branche locale, utilisez l'une des méthodes suivantes:
$ git branch -d nom_branche
$ git branch -D nom_branche
Remarque: l'option -d est un alias pour --delete, qui ne supprime la branche que si elle a déjà été entièrement fusionnée dans sa branche amont. Vous pouvez également utiliser -D, qui est un alias pour --delete --force, qui supprime la branche «quel que soit son état fusionné». [Source: man git-branch]
Notez également que git branch -d nom_branche échouera si vous êtes actuellement
dans la branche que vous souhaitez supprimer. Le message commence par
erreur: impossible de supprimer la branche «nom_branche». Si tel est le cas, commencez par changer
à une autre branche, par exemple: git checkout master.
Supprimer la succursale distante [Mise à jour le 8 septembre 2017]
Depuis Git v1.7.0, vous pouvez supprimer une branche distante en utilisant
$ git push  --delete 
ce qui pourrait être plus facile à retenir que
$ git push : 
qui a été ajouté dans Git v1.5.0 "pour supprimer une branche distante ou une balise."
À partir de Git v2.8.0, vous pouvez également utiliser git push avec l'option -d comme alias pour --delete.
Par conséquent, la version de Git que vous avez installée déterminera si vous devez utiliser la syntaxe la plus simple ou la plus difficile.
Supprimer la succursale distante [Réponse originale du 5 janvier 2010]
Extrait du chapitre 3 de Pro Git par Scott Chacon:
Suppression de succursales distantes
Supposons que vous en ayez terminé avec une branche distante - par exemple, vous et vos collaborateurs avez terminé avec une fonctionnalité et l'avez fusionnée dans la branche principale de votre télécommande (ou quelle que soit la branche dans laquelle se trouve votre ligne de code stable). Vous pouvez supprimer une branche distante en utilisant la syntaxe plutôt obtuse git push [remotename]: [branch]. Si vous souhaitez supprimer votre branche de correctif de serveur du serveur, exécutez ce qui suit:
$ git push origine: serverfix
À git@github.com: schacon / simplegit.git
- [supprimé] serverfix
Boom. Plus de succursales sur votre serveur. Vous voudrez peut-être écouter cette page, car vous aurez besoin de cette commande et vous oublierez probablement la syntaxe. Une façon de se souvenir de cette commande est de rappeler la syntaxe git push [remotename] [localbranch]: [remotebranch] que nous avons abordée un peu plus tôt. Si vous supprimez la partie [localbranch], vous dites en gros: "Ne prenez rien de mon côté et faites-en [remotebranch]."
J'ai publié git push origin: bugfix et cela a fonctionné à merveille. Scott Chacon avait raison - je voudrais faire une oreille de chien à cette page (ou pratiquement une oreille de chien en répondant à cela sur Stack Overflow).
Ensuite, vous devez l'exécuter sur d'autres machines
# Récupérer les modifications de toutes les télécommandes et les supprimer localement
# branches / balises supprimées à distance, etc.
# --prune fera le travail: -;
git fetch --all --prune
pour propager les changements.
|
La réponse de Matthew est idéale pour supprimer les branches distantes et j'apprécie également l'explication, mais pour faire une distinction simple entre les deux commandes:
Pour supprimer une branche locale de votre machine:
git branch -d {the_local_branch} (utilisez -D à la place pour forcer la suppression de la branche sans vérifier l'état de la fusion)
Pour supprimer une branche distante du serveur:
git push origin --delete {the_remote_branch}
Référence: Git: Supprimer une branche (locale ou distante)
|
Les réponses courtes
Si vous souhaitez des explications plus détaillées sur les commandes suivantes, consultez les longues réponses dans la section suivante.
Supprimer une branche distante
git push origin --delete  # Git version 1.7.0 ou plus récente
git push origin -d  # Version plus courte (Git 1.7.0 ou plus récent)
git push origin:  # versions de Git antérieures à 1.7.0
Supprimer une succursale locale
branche git --delete 
git branch -d  # Version plus courte
git branch -D  # Forcer la suppression des branches non fusionnées
Suppression d'une branche locale de suivi à distance
git branch --delete --remotes  / 
git branch -dr  /  # Plus court
git fetch  --prune # Supprimer plusieurs branches obsolètes de suivi à distance
git fetch  -p # Plus court
La réponse longue: il y a trois branches différentes à supprimer!
Lorsque vous supprimez des branches à la fois localement et à distance, gardez à l'esprit que trois branches différentes sont impliquées:
La succursale locale X.
La branche d'origine distante X.
Origine / X de la branche distante locale qui suit la branche distante X.
L'affiche originale utilisée:
git branche -rd origine / correction de bogue
Ce qui a seulement supprimé son origine / correction de bogue de la branche distante locale, et non la correction de bogue de la branche distante réelle sur l'origine.
Pour supprimer cette branche distante réelle, vous devez
git push origin --delete bugfix
Détails supplémentaires
Les sections suivantes décrivent des détails supplémentaires à prendre en compte lors de la suppression de vos branches distantes et de suivi à distance.
Pousser pour supprimer les branches distantes supprime également les branches de suivi à distance
Notez que la suppression de la branche distante X de la ligne de commandel'utilisation d'un push git supprimera également l'origine / X de la branche de suivi à distance locale, il n'est donc pas nécessaire d'élaguer la branche de suivi à distance obsolète avec git fetch --prune ou git fetch -p. Cependant, cela ne ferait pas de mal si vous le faisiez de toute façon.
Vous pouvez vérifier que l'origine / X de la branche de suivi à distance a également été supprimée en exécutant ce qui suit:
# Afficher uniquement les branches de suivi à distance
git branch --remotes
git branche -r
# Afficher à la fois les branches strictement locales et distantes
git branch --all
git branche -a
Élagage de l'origine / X de la branche de suivi à distance locale obsolète
Si vous n'avez pas supprimé votre branche distante X de la ligne de commande (comme ci-dessus), alors votre référentiel local contiendra toujours (désormais obsolète) l'origine / X de la branche distante de suivi. Cela peut se produire si vous supprimez une branche distante directement via l'interface Web de GitHub, par exemple.
Un moyen typique de supprimer ces branches obsolètes de suivi à distance (depuis la version 1.6.6 de Git) consiste simplement à exécuter git fetch avec --prune ou plus court -p. Notez que cela supprime toutes les branches de suivi à distance locales obsolètes pour toutes les branches distantes qui n'existent plus sur la télécommande:
git fetch origin --prune
git fetch origin -p # Plus court
Voici la citation pertinente des notes de version 1.6.6 (c'est moi qui souligne):
"git fetch" a appris --all et --multipleoptions, pour exécuter fetch depuis
de nombreux référentiels et l'option --prune pour supprimer le suivi à distance
branches qui sont devenues périmées. Ceux-ci font "git remote update" et "git
élagage à distance "moins nécessaire (il n'y a pas de plan de suppression" à distance
update "ni" remote prune ", cependant).
Alternative à l'élagage automatique ci-dessus pour les branches obsolètes de suivi à distance
Alternativement, au lieu d'élaguer vos branches de suivi à distance locales obsolètes via git fetch -p, vous pouvez éviter d'effectuer l'opération réseau supplémentaire en supprimant simplement manuellement la ou les branches avec les indicateurs --remote ou -r:
git branch --delete --remotes origin / X
git branch -dr origin / X # Shorter
Voir également
Page de manuel de git-branch (1).
Page de manuel git-fetch (1).
Pro Git § 3.5 Git Branching - Branches distantes.
|
Procédure de suppression d'une branche:
Pour supprimer la branche distante:
git push origin --delete 
Pour supprimer la branche locale, vous disposez de trois méthodes:
1: branche git -D 
2: git branch --delete --force  # Identique à -D
3: git branch --delete  # Erreur lors de l'annulation de la fusion
Expliquez: OK, expliquez simplement ce qui se passe ici!
Faites simplement git push origin --delete pour supprimer uniquement votre branche distante, ajoutez le nom de la branche à la fin et cela supprimera et la poussera vers remote en même temps ...
De plus, git branch -D, qui supprime simplement la branche locale uniquement! ...
-D signifie --delete --force qui supprimera la branche même si elle n'est pas fusionnée (forcer la suppression), mais vous pouvez également utiliser -d qui signifie --delete qui génère une erreur respective de l'état de fusion de branche ...
Je crée également l'image ci-dessous pour montrer les étapes:
|
Vous pouvez également utiliser ce qui suit pour supprimer la branche distante
git push --delete origin serverfix
Ce qui fait la même chose que
git push origine: serverfix
mais cela peut être plus facile à retenir.
|
Conseil: lorsque vous supprimez des branches à l'aide de
git branch -d  # Supprime la branche locale
ou
git push origin:  # Supprime la branche distante
seules les références sont supprimées. Même si la branche est effectivement supprimée sur la télécommande, les références à celle-ci existent toujours dans les référentiels locaux des membres de votre équipe. Cela signifie que pour les autres membres de l'équipe, les branches supprimées sont toujours visibles lorsqu'ils font une branche git -a.
Pour résoudre ce problème, les membres de votre équipe peuvent élaguer les branches supprimées avec
git remote prune 
Il s'agit généralement de git remote prune origin.
|
Si vous souhaitez supprimer une branche, commencez par effectuer le retrait dans la branche autre que la branche à supprimer.
git checkout other_than_branch_to_be_deleted
Suppression de la branche locale:
git branch -D branch_to_be_deleted
Suppression de la branche distante:
git push origin --delete branch_to_be_deleted
|
git branch -D 
git branch -D -r origine / 
git push origin: 
|
C'est simple: exécutez simplement la commande suivante:
Pour supprimer une branche Git à la fois localement et à distance, supprimez d'abord la branche locale à l'aide de cette commande:
exemple de git branch -d
(Voici l'exemple du nom de la branche.)
Et après cela, supprimez la branche distante à l'aide de cette commande:
git push origin: exemple
|
C'est très simple:
Pour supprimer la branche distante
git push -d origine 
Ou
git push origine: 
Pour supprimer de force la branche locale
git branch -D 
|
Une autre approche est:
git push --prune origin
AVERTISSEMENT: cela supprimera toutes les branches distantes qui n'existent pas localement. Ou plus globalement,
git push --mirror
fera effectivement ressembler le référentiel distant à la copie locale du référentiel (les têtes locales, les télécommandes et les balises sont mises en miroir sur la télécommande).
|
J'utilise ce qui suit dans mes paramètres Bash:
alias git-shoot = "git pushorigine - supprimer "
Ensuite, vous pouvez appeler:
nom de la branche git-shoot
|
Supprimer localement:
Pour supprimer une branche locale, vous pouvez utiliser:
git branch -d 
Pour supprimer une branche de force, utilisez -D au lieu de -d.
git branch -D 
Supprimer à distance:
Il existe deux options:
git push origin: nom de branche
git push origin --delete branchname
Je vous suggère d'utiliser la deuxième méthode car elle est plus intuitive.
|
Depuis janvier 2013, GitHub a inclus un bouton Supprimer la branche à côté de chaque branche dans votre page "Branches".
Article de blog pertinent: créer et supprimer des branches
|
Si vous souhaitez effectuer ces deux étapes avec une seule commande, vous pouvez lui créer un alias en ajoutant ce qui suit à votre ~ / .gitconfig:
[alias]
rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f"
Vous pouvez également l'ajouter à votre configuration globale à partir de la ligne de commande en utilisant
git config --global alias.rmbranch \
'! f () {git branch -d $ {1} && git push origin --delete $ {1}; };F'
REMARQUE: si vous utilisez -d (d minuscule), la branche ne sera supprimée que si elle a été fusionnée. Pour forcer la suppression, vous devrez utiliser -D (D majuscule).
|
Pour supprimer votre succursale localement et à distance
Checkout vers la branche principale - Git Checkout Master
Supprimer votre branche distante - git push origin --delete 
Supprimez votre branche locale - git branch --delete 
|
Vous pouvez également le faire en utilisant git remote prune origin
$ git remote prune origin
Origine de la taille
URL: git@example.com/yourrepo.git
* origine [élaguée] / quelques-branches
Il élague et supprime les branches de suivi à distance d'une liste de branches git -r.
|
En plus des autres réponses, j'utilise souvent l'outil git_remote_branch. C'est une installation supplémentaire, mais cela vous offre un moyen pratique d'interagir avec les succursales distantes. Dans ce cas, pour supprimer:
grb supprimer une branche
Je trouve que j'utilise aussi assez souvent les commandes de publication et de suivi.
|
Une commande à une seule ligne pour supprimer à la fois local et distant:
D = nom de la branche; git branch -D $ D; origine git push: $ D
Ou ajoutez l'alias ci-dessous à votre ~ / .gitconfig. Utilisation: git kill nom-branche
[alias]
kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f"
|
Suppression de branches
Supposons que notre travail sur la branche "contact-form" soit terminé et que nous l'avons déjà intégré dans "master". Puisque nous n'en avons plus besoin, nous pouvons le supprimer (localement):
$ git branch -d formulaire de contact
Et pour supprimer la branche distante:
git push origin - supprimer le formulaire de contact
|
Supprimer la branche distante
origine git push: 
Supprimer la branche locale
git branch -D 
Supprimer les étapes de la branche locale:
commander dans une autre succursale
supprimer la branche locale
|
Dites simplement:
git branch -d 
git push origine: 
|
git push origin --delete 
est plus facile à retenir que
git push origine: branchName
|
Vous pouvez maintenant le faire avec l'application GitHub Desktop.
Après le lancement de l'application
Cliquez sur le projet contenant la branche
Basculez vers la branche que vous souhaitez supprimer
Dans le menu "Branche", sélectionnez "Annuler la publication ..." pour supprimer la branche des serveurs GitHub.
Dans le menu «Branche», sélectionnez «Supprimer« nom_branche »...» pour supprimer la branche de votre machine locale (AKA la machine sur laquelle vous travaillez actuellement)
|
Pour supprimer localement - (normal)
git branche -d ma_branche
Si votre branche est en cours de rebasage / fusion et que cela n'a pas été fait correctement, cela signifie que vous obtiendrez une erreur, Rebase / Merge in progress, donc dans ce cas, vous ne pourrez pas supprimer votre branche.
Donc, soit vous devez résoudre le rebasage / fusion. Sinon, vous pouvez forcer la suppression en utilisant,
git branch -D ma_branche
Pour supprimer à distance:
git push --delete origin my_branch
Vous pouvez faire de même en utilisant:
git push origin: my_branch # Facile à retenir, les deux feront de même.
Représentation graphique:
|
Cela ne fonctionnera pas si vous avez une balise avec le même nom que la branche sur la télécommande:
$ git push origin: nom-branche-ou-tag
erreur: dst refspec nom-branche-ou-balise correspond à plus d'un.
erreur: échec de l'envoi de certaines références à 'git@github.com: SomeName / some-repo.git'
Dans ce cas, vous devez spécifier que vous souhaitez supprimer la branche, pas la balise:
git push origin: refs / heads / branch-or-tag-name
De même, pour supprimer la balise au lieu de la branche, vous utiliseriez:
git push origin: refs / tags / nom-branche-ou-tag
|
La plupart des autres réponses entraîneront des erreurs / avertissements. Cette approche est relativement infaillible bien que vous puissiez toujours avoir besoin de git branch -D branch_to_delete si elle n'est pas complètement fusionnée dans some_other_branch, par exemple.
git checkout some_other_branch
git push origine: branch_to_delete
git branch -d branch_to_delete
L'élagage à distance n'est pas nécessaire si vous avez supprimé la branche distante. Il est uniquement utilisé pour obtenir les télécommandes les plus à jour disponibles sur un référentiel que vous suivez. J'ai observé que git fetch ajoutera des télécommandes, pas les supprimera. Voici un exemple de quand git remote prune origin fera réellement quelque chose:
Utilisateur Aeffectue les étapes ci-dessus. L'utilisateur B exécutera les commandes suivantes pour voir les branches distantes les plus à jour:
git chercher
git remote prune origin
git branche -r
|
J'en ai eu marre de chercher cette réponse sur Google, alors j'ai adopté une approche similaire à la réponse que crizCraig a publiée plus tôt.
J'ai ajouté ce qui suit à mon profil Bash:
function gitdelete () {
git push origin - supprimer $ 1
branche git -D $ 1
}
Ensuite, chaque fois que j'en ai fini avec une branche (fusionnée dans master, par exemple), je lance ce qui suit dans mon terminal:
gitdelete mon-nom-branche
... qui supprime ensuite le nom de ma branche d'origine ainsi que localement.
|
Avant d'exécuter
branche git --delete 
assurez-vous de déterminer d'abord le nom exact de la branche distante en exécutant:
git ls-remote
Cela vous dira quoi saisir exactement pour la valeur . (la branche est sensible à la casse!)
|
Utilisation:
git push origin: bugfix # Supprime la branche distante
git branch -d bugfix # Doit supprimer la branche locale manuellement
Si vous êtes sûr de vouloir le supprimer, exécutez
git branch -D correction de bogue
Maintenant, pour nettoyer les branches distantes supprimées, exécutez
git remote prune origin
|
1
2
Prochain
Question très active. Gagnez 10 points de réputation pour répondre à cette question. L'exigence de réputation permet de protéger cette question contre les spams et les activités sans réponse.
Ce n'est pas la réponse que vous recherchez? Parcourez les autres questions marquées git version-control git-branch git-push git-remote ou posez votre propre question.